package lib.bone.admin.controller.nepu;

import cn.dev33.satoken.stp.StpUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lib.bone.access.config.cycle.NepuCycle;
import lib.bone.access.config.cycle.NepuCycleService;
import lib.bone.access.constant.WorkloadTypeConst;
import lib.bone.access.module.post.NepuPostService;
import lib.bone.access.module.post.domain.NepuPost;
import lib.bone.audit.workload.domain.NepuWorkload;
import lib.bone.audit.workload.domain.WorkloadUseLog;
import lib.bone.audit.workload.service.NepuWorkloadService;
import lib.bone.audit.workload.service.WorkloadUseLogService;
import lib.bone.common.constant.ResponseCodeConst;
import lib.bone.common.core.domain.ResponseDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@RestController
@RequestMapping("nepu")
@Api(tags = "薪酬管理")
@Deprecated
public class SalaryController {
    @Autowired
    NepuPostService postService;

    @Autowired
    NepuCycleService cycleService;

    @Autowired
    NepuWorkloadService workloadService;

//    @Autowired
//    DeductionController deductionController;

    @Autowired
    WorkloadUseLogController workloadUseLogController;

    @Autowired
    WorkloadUseLogService workloadUseLogService;

//    @GetMapping("salary")
//    @ApiOperation(value = "绩效总额")
//    public ResponseDTO<Object> salaryQuery(){
//        Long id = StpUtil.getLoginIdAsLong();
//        deductionController.userWorkloadDeduction(id);
//        List<WorkloadUseLog> workloadUseLogList = workloadUseLogService.findByUserId(id);
//        if (workloadUseLogList.size()==0){
//            return ResponseDTO.wrap(ResponseCodeConst.NOT_FOUND,"不存在工作量抵扣记录！");
//        }
//        workloadUseLogList.stream().filter(
//                ele->ele.getUseMethod().equals()
//        )
//
//
//
//
//
//        return null;
//    }

//    @GetMapping("salary")
//    @ApiOperation(value = "根据周期获取薪酬")
//    public ResponseDTO<Object> salaryQuery(@RequestParam(value = "cyceId") String cycleId){
//        String loginId = StpUtil.getLoginIdAsString();
//        //1.  查询岗位 获取岗位所需的 教学工作量 和 科研工作量
//        Optional<NepuPost> postOp = postService.getById(loginId);
//        if (!postOp.isPresent()){
//            return ResponseDTO.wrap(ResponseCodeConst.NOT_FOUND);
//        }
//        NepuPost post = postOp.get();
//        // 所需教学工作量
//        double teachNeed = post.getTeachWorkload();
//        // 所需科研工作量
//        double researchNeed = post.getResearchWorkload();
//
//        //2.  查询当前周期工作量记录
//        String nowCycleId = cycleService.getNowResearchCycleId();
//
//        List<NepuCycle> cycleList = cycleService.getNowSubCycle();
//
//        List<String> cycleIds = new ArrayList<>();
//        cycleIds.add(nowCycleId);
//
//        cycleList.forEach(cycle -> {
//            cycleIds.add(cycle.getId());
//        });
//
//        List<NepuWorkload> workloads = workloadService.getNowWorkload(loginId,cycleIds);
//
//        // 过滤本周期科研工作量
//        List<NepuWorkload> r_workloads = workloads.stream().filter(
//                ele -> ele.getWorkloadType().equals(WorkloadTypeConst.RESEARCH)
//        ).collect(Collectors.toList());
//
//
//
//
//
//        return null;
//    }
}
